- breadcrumb_title _("Dashboard")
- page_title _("Dashboard")
- billable_users_url = help_page_path('subscriptions/self_managed/index', anchor: 'billable-users')
- billable_users_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer nofollow">'.html_safe % { url: billable_users_url }

= render_if_exists 'shared/manual_quarterly_reconciliation_banner'
= render_if_exists 'shared/submit_license_usage_data_banner'
= render_if_exists 'shared/qrtly_reconciliation_alert'
= render 'admin/dashboard/security_newsletter_callout'

- if @notices
  - @notices.each do |notice|
    .js-vue-alert{ 'v-cloak': true, data: { variant: notice[:type],
      dismissible: true.to_s } }
      = notice[:message].html_safe

- if @license.present?
  .license-panel.gl-mt-5
    = render_if_exists 'admin/licenses/summary'
    = render_if_exists 'admin/licenses/breakdown'

.admin-dashboard.gl-mt-3
  .h3.gl-mb-5.gl-mt-0= _('Instance overview')
  .row
    - component_params = { body_options: { class: 'gl-display-flex gl-justify-content-space-between gl-align-items-center gl-p-6' },
                           footer_options: { class: 'gl-bg-transparent'} }
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new(**component_params) do |c|
        - c.with_body do
          %span
            .d-flex.align-items-center
              = sprite_icon('project', size: 16, css_class: 'gl-text-gray-700')
              %h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, Project)
            .gl-mt-3.text-uppercase= s_('AdminArea|Projects')
          = render Pajamas::ButtonComponent.new(href: new_project_path) do
            = s_('AdminArea|New project')
        - c.with_footer do
          .d-flex.align-items-center
            = link_to(s_('AdminArea|View latest projects'), admin_projects_path(sort: 'created_desc'))
            = sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new(**component_params) do |c|
        - c.with_body do
          %span
            .d-flex.align-items-center
              = sprite_icon('users', size: 16, css_class: 'gl-text-gray-700')
              %h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, User)
              %span.gl-outline-0.gl-ml-3{ tabindex: "0", data: { container: "body",
                toggle: "popover",
                placement: "top",
                html: "true",
                trigger: "focus",
                content: s_("AdminArea|All users created in the instance, including users who are not %{billable_users_link_start}billable users%{billable_users_link_end}.").html_safe % { billable_users_link_start: billable_users_link_start, billable_users_link_end: '</a>'.html_safe },
              } }
                = sprite_icon('question-o', size: 16, css_class: 'gl-text-blue-600')
            .gl-mt-3.text-uppercase
              = s_('AdminArea|Users')
              = link_to(s_('AdminArea|Users statistics'), admin_dashboard_stats_path, class: "text-capitalize gl-ml-2")
          = render Pajamas::ButtonComponent.new(href: new_admin_user_path) do
            = s_('AdminArea|New user')
        - c.with_footer do
          .d-flex.align-items-center
            = link_to(s_('AdminArea|View latest users'), admin_users_path({ sort: 'created_desc' }))
            = sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new(**component_params) do |c|
        - c.with_body do
          %span
            .d-flex.align-items-center
              = sprite_icon('group', size: 16, css_class: 'gl-text-gray-700')
              %h3.gl-m-0.gl-ml-3= approximate_count_with_delimiters(@counts, Group)
            .gl-mt-3.text-uppercase= s_('AdminArea|Groups')
          = render Pajamas::ButtonComponent.new(href: new_admin_group_path) do
            = s_('AdminArea|New group')
        - c.with_footer do
          .d-flex.align-items-center
            = link_to(s_('AdminArea|View latest groups'), admin_groups_path(sort: 'created_desc'))
            = sprite_icon('chevron-right', size: 12, css_class: 'gl-text-gray-700 gl-ml-2')
  .row
    .col-md-4.gl-mb-6
      #js-admin-statistics-container
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new do |c|
        - c.with_body do
          %h4= s_('AdminArea|Features')
          = feature_entry(_('Sign up'),
            href: general_admin_application_settings_path(anchor: 'js-signup-settings'),
            enabled: allow_signup?)

          = feature_entry(_('LDAP'),
            enabled: Gitlab.config.ldap.enabled,
            doc_href: help_page_path('administration/auth/ldap/index.md'))

          = feature_entry(_('Gravatar'),
            href: general_admin_application_settings_path(anchor: 'js-account-settings'),
            enabled: gravatar_enabled?)

          = feature_entry(_('OmniAuth'),
            href: general_admin_application_settings_path(anchor: 'js-signin-settings'),
            enabled: Gitlab::Auth.omniauth_enabled?,
            doc_href: help_page_path('integration/omniauth'))

          = feature_entry(_('Reply by email'),
            enabled: Gitlab::Email::IncomingEmail.enabled?,
            doc_href: help_page_path('administration/reply_by_email'))

          = render_if_exists 'admin/dashboard/elastic_and_geo'

          = feature_entry(_('Container Registry'),
            href: ci_cd_admin_application_settings_path(anchor: 'js-registry-settings'),
            enabled: Gitlab.config.registry.enabled,
            doc_href: help_page_path('user/packages/container_registry/index'))

          = feature_entry(_('GitLab Pages'),
            enabled: Gitlab.config.pages.enabled,
            doc_href: help_instance_configuration_url)

          = feature_entry(_('Shared Runners'),
            href: admin_runners_path,
            enabled: Gitlab.config.gitlab_ci.shared_runners_enabled)
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new do |c|
        - c.with_body do
          %h4
            = s_('AdminArea|Components')
            - if show_version_check?
              .float-right
                .js-gitlab-version-check-badge{ data: { "size": "lg", "actionable": "true", "version": gitlab_version_check.to_json } }
                = link_to(sprite_icon('question-o'), "https://gitlab.com/gitlab-org/gitlab/-/blob/master/CHANGELOG.md", class: 'gl-ml-2', target: '_blank', rel: 'noopener noreferrer')
          %p
            = link_to _('GitLab'), general_admin_application_settings_path
            %span.float-right
              = link_to_version
          %p
            = _('GitLab Shell')
            %span.float-right
              = Gitlab::Shell.version
          %p
            = _('GitLab Workhorse')
            %span.float-right
              = gitlab_workhorse_version
          %p
            = _('GitLab API')
            %span.float-right
              = API::API::version
          - if Gitlab.config.pages.enabled
            %p
              = _('GitLab Pages')
              %span.float-right
                = Gitlab::Pages::VERSION
          - if Gitlab::Kas.enabled?
            %p
              = _('GitLab KAS')
              %span.gl-float-right
                = Gitlab::Kas.version

          = render_if_exists 'admin/dashboard/geo'

          %p
            = _('Ruby')
            %span.float-right
              #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
          %p
            = _('Rails')
            %span.float-right
              #{Rails::VERSION::STRING}
          - database_versions.each do |database_name, database|
            %p
              #{database[:adapter_name]} (#{database_name})
              %span.float-right
                = database[:version]
          %p
            = _('Redis')
            %span.float-right
              = @redis_versions&.join(", ")
          %p
            = link_to _("Gitaly Servers"), admin_gitaly_servers_path
  .row
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new do |c|
        - c.with_body do
          %h4= s_('AdminArea|Latest projects')
          - @projects.each do |project|
            .gl-display-flex.gl-py-3
              .gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
                = link_to project.full_name, admin_project_path(project)
              %span.gl-white-space-nowrap.gl-text-right
                #{time_ago_with_tooltip(project.created_at)}
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new do |c|
        - c.with_body do
          %h4= s_('AdminArea|Latest users')
          - @users.each do |user|
            .gl-display-flex.gl-py-3
              .gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
                = link_to [:admin, user] do
                  = user.name
              %span.gl-white-space-nowrap.gl-text-right
                #{time_ago_with_tooltip(user.created_at)}
    .col-md-4.gl-mb-6
      = render Pajamas::CardComponent.new do |c|
        - c.with_body do
          %h4= s_('AdminArea|Latest groups')
          - @groups.each do |group|
            .gl-display-flex.gl-py-3
              .gl-mr-auto.gl-overflow-hidden.gl-text-overflow-ellipsis
                = link_to [:admin, group] do
                  = group.full_name
              %span.gl-white-space-nowrap.gl-text-right
                #{time_ago_with_tooltip(group.created_at)}
